fn test_if_let() {
    let boolean = true;
    let mut binary = 0;
    //if let 左侧为模式，右侧为要匹配的值。
    if let true = boolean {
        binary = 1;
    }
    assert_eq!(binary, 1);
}

fn test_no_while_let() {
    let mut v = vec![1,2,3,4,5];
    loop {
        match v.pop() {
            Some(x) => println!("{}", x),
            None => break,  //该句只为跳出循环
        }
    }
}

//使用 while_let 简化上面的代码
fn test_while_let(){
    let mut v = vec![1,2,30,0,4,5];
    //左侧 Some(x)为匹配模式，匹配右侧pop方法调用返回的Option类型结果，
    //并自动创建x绑定供 println!宏语句使用。
    //如果数组中值取空，则自动跳出循环
    while let Some(x) = v.pop() {
        println!("{}", x);
    }
}

fn main() {
    test_if_let();
    test_no_while_let();
    test_while_let();
}